"""
书架管理系统

背景：
你家里的书架上放满了各种书籍，查找起来不方便。为了更好地管理书籍，你决定设计一个简单的程序来帮助你记录书籍信息，并实现一些基本的功能。

要求：
请定义一个名为 Book 的类和一个名为 Bookshelf 的类，完成以下功能：

  功能1：创建书籍
    类 Book 表示一本书，包含以下属性：
      title：书名
      author：作者
      pages：页数
      为 Book 类定义一个方法 info()，用于返回该书的详细信息（例如："《书名》 by 作者, 页数: 300 页"）。

  功能2：管理书架
    类 Bookshelf 表示一个书架，包含以下功能：
      添加书籍：一个方法 add_book(book)，将一本书添加到书架上。
      显示所有书籍：一个方法 list_books()，按顺序列出书架上所有书籍的详细信息。
      查找书籍：一个方法 find_book_by_title(title)，根据书名查找书籍，如果找到，则返回书的详细信息；如果没有找到，则提示“未找到书籍”。

说明：
  编写主程序部分，创建一个 Bookshelf 对象，并添加至少 3 本书（由用户输入书籍信息）。
  添加后，展示书架上所有书籍的详细信息。
  让用户输入书名查找书籍，并显示查找结果。
"""

# 定义 Book 类
class Book:
    def __init__(self, title, author, pages):
        """
        初始化 Book 类的实例。

        :param title: 书名
        :param author: 作者
        :param pages: 页数
        """
        self.title = title
        self.author = author
        self.pages = pages

    def info(self):
        """
        返回书籍的详细信息。

        :return: 书籍信息字符串
        """
        return f"《{self.title}》 by {self.author}, 页数: {self.pages} 页"

# 定义 Bookshelf 类
class Bookshelf:
    def __init__(self):
        """
        初始化 Bookshelf 类的实例。
        """
        self.books = []  # 用于存储书籍列表

    def add_book(self, book):
        """
        添加一本书到书架上。

        :param book: Book 类的实例
        """
        self.books.append(book)
        print(f"已添加书籍: {book.title}")

    def list_books(self):
        """
        按顺序列出书架上所有书籍的详细信息。
        """
        if not self.books:
            print("书架上没有书籍。")
            return
        print("书架上的书籍列表:")
        for idx, book in enumerate(self.books, start=1):
            print(f"{idx}. {book.info()}")

    def find_book_by_title(self, title):
        """
        根据书名查找书籍。

        :param title: 书名
        :return: 书籍信息字符串或未找到提示
        """
        for book in self.books:
            if book.title == title:
                return book.info()
        return "未找到书籍"

def main():
    # 创建 Bookshelf 对象
    shelf = Bookshelf()

    print("欢迎使用书架管理系统！")
    print("请按照提示添加至少 3 本书到书架上。\n")

    # 添加至少 3 本书
    for i in range(1, 4):
        print(f"添加第 {i} 本书:")
        title = input("请输入书名: ").strip()
        author = input("请输入作者: ").strip()
        while True:
            try:
                pages = int(input("请输入页数: ").strip())
                break
            except ValueError:
                print("页数必须是一个整数，请重新输入。")
        new_book = Book(title, author, pages)
        shelf.add_book(new_book)
        print()

    # 显示所有书籍
    print("\n书架上的所有书籍如下:\n")
    shelf.list_books()
    print()

    # 查找书籍
    while True:
        search_title = input("请输入要查找的书名（输入 '退出' 来结束查找）: ").strip()
        if search_title == '退出':
            print("感谢使用书架管理系统，再见！")
            break
        result = shelf.find_book_by_title(search_title)
        print(f"查找结果: {result}\n")

if __name__ == "__main__":
    main()